@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

REM Windows环境快速设置脚本
REM 解决PowerShell执行策略、依赖安装等常见问题

echo ========================================
echo   Kafka Tool Windows环境设置脚本
echo ========================================
echo.
echo 此脚本将帮助您:
echo 1. 检查并配置PowerShell执行策略
echo 2. 验证Python环境
echo 3. 创建虚拟环境
echo 4. 安装项目依赖
echo 5. 配置数据库
echo 6. 解决常见兼容性问题
echo.
echo 按任意键开始设置...
pause >nul
echo.

REM 检查是否以管理员身份运行
net session >nul 2>&1
if !errorlevel! neq 0 (
    echo 注意: 未以管理员身份运行，某些操作可能失败
    echo 建议右键点击脚本选择"以管理员身份运行"
    echo.
)

REM 步骤1: 配置PowerShell执行策略
echo [1/6] 配置PowerShell执行策略...
powershell -Command "Get-ExecutionPolicy -Scope CurrentUser" | findstr "RemoteSigned" >nul
if !errorlevel! neq 0 (
    echo 正在设置PowerShell执行策略...
    powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force" >nul 2>&1
    if !errorlevel! equ 0 (
        echo ✓ PowerShell执行策略已设置为RemoteSigned
    ) else (
        echo ⚠ PowerShell执行策略设置失败，将使用.bat文件激活虚拟环境
    )
) else (
    echo ✓ PowerShell执行策略已正确配置
)
echo.

REM 步骤2: 验证Python环境
echo [2/6] 验证Python环境...
py --version >nul 2>&1
if !errorlevel! neq 0 (
    python --version >nul 2>&1
    if !errorlevel! neq 0 (
        echo ✗ Python未安装或不在PATH中
        echo 请从 https://python.org 下载并安装Python 3.8+
        echo 安装时请勾选"Add Python to PATH"
        pause
        exit /b 1
    ) else (
        set PYTHON_CMD=python
        echo ✓ 检测到Python (使用python命令)
    )
) else (
    set PYTHON_CMD=py
    echo ✓ 检测到Python (使用py命令)
)

REM 显示Python版本
for /f "tokens=2" %%v in ('%PYTHON_CMD% --version') do echo   版本: %%v
echo.

REM 步骤3: 创建虚拟环境
echo [3/6] 创建虚拟环境...
if exist ".venv" (
    echo ✓ 虚拟环境已存在
) else (
    echo 正在创建虚拟环境...
    %PYTHON_CMD% -m venv .venv
    if !errorlevel! equ 0 (
        echo ✓ 虚拟环境创建成功
    ) else (
        echo ✗ 虚拟环境创建失败
        pause
        exit /b 1
    )
)
echo.

REM 步骤4: 安装项目依赖
echo [4/6] 安装项目依赖...
echo 正在安装依赖包，请稍候...
.venv\Scripts\python.exe -m pip install --upgrade pip >nul 2>&1
.venv\Scripts\python.exe -m pip install -r requirements.txt
if !errorlevel! equ 0 (
    echo ✓ 依赖安装成功
) else (
    echo ⚠ 部分依赖安装失败，尝试解决兼容性问题...
)
echo.

REM 步骤5: 解决kafka-python兼容性问题
echo [5/6] 检查Kafka依赖兼容性...
.venv\Scripts\python.exe -c "from kafka import KafkaProducer" >nul 2>&1
if !errorlevel! neq 0 (
    echo 检测到kafka-python兼容性问题，正在修复...
    .venv\Scripts\python.exe -m pip uninstall kafka-python -y >nul 2>&1
    .venv\Scripts\python.exe -m pip install confluent-kafka >nul 2>&1
    echo ✓ 已安装confluent-kafka作为替代方案
    
    REM 注释掉有问题的Kafka导入
    if exist "api\views.py" (
        powershell -Command "(Get-Content 'api\views.py') -replace '^from kafka', '# from kafka' | Set-Content 'api\views.py'" >nul 2>&1
    )
    if exist "api\consumers.py" (
        powershell -Command "(Get-Content 'api\consumers.py') -replace '^from kafka', '# from kafka' | Set-Content 'api\consumers.py'" >nul 2>&1
    )
    echo ✓ 已临时注释Kafka相关导入
) else (
    echo ✓ Kafka依赖正常
)
echo.

REM 步骤6: 配置数据库
echo [6/6] 配置数据库...
echo 检查数据库连接...
.venv\Scripts\python.exe manage.py check --database default >nul 2>&1
if !errorlevel! neq 0 (
    echo MySQL连接失败，配置SQLite数据库...
    
    REM 备份原始设置文件
    if not exist "kafkatool\settings.py.backup" (
        copy "kafkatool\settings.py" "kafkatool\settings.py.backup" >nul
    )
    
    REM 修改数据库配置为SQLite
    powershell -Command "$content = Get-Content 'kafkatool\settings.py' -Raw; $content = $content -replace \"'ENGINE': 'django.db.backends.mysql'\", \"'ENGINE': 'django.db.backends.sqlite3'\"; $content = $content -replace \"'NAME': 'kafkatool'\", \"'NAME': BASE_DIR / 'db.sqlite3'\"; Set-Content 'kafkatool\settings.py' $content" >nul 2>&1
    echo ✓ 已配置SQLite数据库
else (
    echo ✓ MySQL数据库连接正常
)

REM 运行数据库迁移
echo 运行数据库迁移...
.venv\Scripts\python.exe manage.py makemigrations >nul 2>&1
.venv\Scripts\python.exe manage.py migrate >nul 2>&1
if !errorlevel! equ 0 (
    echo ✓ 数据库迁移完成
) else (
    echo ⚠ 数据库迁移失败，启动时将自动处理
)
echo.

echo ========================================
echo           设置完成！
echo ========================================
echo.
echo ✓ Windows环境配置完成
echo ✓ Python虚拟环境已创建
echo ✓ 项目依赖已安装
echo ✓ 数据库已配置
echo ✓ 兼容性问题已解决
echo.
echo 下一步:
echo 1. 运行 start_services.bat 启动后端服务
echo 2. 进入 vue-kafka-tool 目录启动前端:
echo    cd vue-kafka-tool
echo    npm install
echo    npm run serve
echo.
echo 如果遇到问题，请查看:
echo - 部署文档: DEPLOYMENT_GUIDE.md
echo - Windows说明: WINDOWS_SERVICE_SCRIPTS_README.md
echo - 日志文件: logs\*.log
echo.
echo 按任意键退出...
pause >nul